/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package action;

import controller.Action;
import java.io.IOException;
import javax.servlet.RequestDispatcher;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import model.Conta;
import observer.BancoConcreto;
import persistense.ContaDAO;
import persistense.OperacaoDAO;
import strategy.OperacaoSaque;

/**
 *
 * @author Aurelio
 */
public class SaqueAction implements Action {

    private static final String HOME = "caixa.jsp";

    @Override
    public void execute(HttpServletRequest request, HttpServletResponse response) throws IOException {
        try {
            Double valor = Double.parseDouble(request.getParameter("valor"));
            String numeroConta = request.getParameter("numero_conta");

            Conta conta = ContaDAO.getInstance().recuperarContaporNumero(numeroConta);
            OperacaoSaque op = new OperacaoSaque();
            op.getConta().setId(conta.getId());
            op.setValor(valor);
            BancoConcreto bc = new BancoConcreto(conta, op);
            String resultadoObservador[] = bc.atualizar();
            boolean liberarSaque = Boolean.parseBoolean(resultadoObservador[2]);
            if(liberarSaque){
                OperacaoDAO.getInstance().salvar(op);
                op.setValor(0);
                bc = new BancoConcreto(conta, op);
                resultadoObservador = bc.atualizar();
            }
            request.setAttribute("saldo", op.recuperaSaldo(numeroConta));
            request.setAttribute("mensagem", resultadoObservador[1]);
            request.setAttribute("corCampoSaldo",resultadoObservador[0]);
            RequestDispatcher rd = request.getRequestDispatcher(HOME);
            rd.forward(request, response);

        } catch (Exception e) {
            System.out.println(e);
        }
    }
}
